package com.neu.his.department.service;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.neu.his.department.entity.Department;
import com.neu.his.department.entity.DepartmentVo;

@Service
public interface DepartmentService {
	/*1.对科室的添加
	 * @see 对科室数据进行添加
	 * @param Department department实体类对象
	 * @return boolean,表示是否添加成功
	 * */
	public boolean addDepartment(Department department);
		
	/*2.对科室的删除单个
	 * @see 对科室数据进行单个删除
	 * @param id 科室的id
	 * @return boolean,表示是否删除成功
	 * */
	public boolean deleteDepartment(int id);
	
	/*3.对科室的删除通过多个id
	 * @see 对科室数据进行批量删除
	 * @param Integter [] ids  多个科室id
	 * @return boolean,表示是否删除成功
	 * */
	public boolean deleteDepartmentByIds(@Param("ids") Integer [] ids);
	
	/*4. 对科室的修改
	 * @see 对科室数据修改
	 * @param Department department实体类对象
	 * @return boolean,表示是否修改成功
	 * */
	public boolean updateDepartment(Department department);
	
	/*5.带条件的分页查询
	 * @see 对科室数据进行条件分页查询   支持根据科室编码，科室名和所属科室类型进行搜索
	 * @param page 表示当前页	limit表示每页数量	
	 * 			查询关键字:	keyword 表示科室编码	keyword2 表示科室名		keyword3表示科室类型
	 * @return List<DepartmentVo>分页查询数据
	 * */
	public List<DepartmentVo> pageDepartmentQuery(@Param("page") int page,@Param("limit") int limit,@Param("keyword") String keyword,@Param("keyword2") String keyword2,@Param("keyword3") int keyword3);
	
	/*6.查询总数依照分页
	 * @see 对科室数据总数进行显示 ,用于分页  支持根据科室编码，科室名和所属科室类型进行搜索
	 * @param 查询关键字:	keyword 表示科室编码	keyword2 表示科室名		keyword3表示科室类型
	 * @return int	总数量用于分页
	 * */
	public int pageDepartmentTotal(@Param("keyword") String keyword,@Param("keyword2") String keyword2,@Param("keyword3") int keyword3);
	
	/*7.excel导入科室信息
	 * @see 接收excel对数据库批量添加数据库
	 * @param MultipartFile file	接收的excel文件
	 * */
	public void importExcel(MultipartFile file);
	
	/*8.excel导出科室信息
	 * @see 接收excel进行导出科室信息
	 * @param HttpServletResponse response	相应信息
	 * */
	public void exportExcel(HttpServletResponse response);
	
	
}
